In real-time communication applications, the end-to-end latency from mouth to ear is desired to be kept at a minimum. As a result, the application strives to cut out any audio pipeline buffering in the system. On the other hand, the audio device is typically driven by a clock independent of a main clock of the system (e.g. the processor clock) and requires buffering to ensure uninterrupted audio rendering. If the main clock is blocked for any reason, then the application does not have enough time to fill the rendering buffer before the audio device picks up the data in the buffer to feed to the digital-to-analog converter. This result is termed an audio glitch.
To ensure smooth playback, buffering is necessary for the rendering device contradicting the requirement for low latency. A majority of real-time applications choose a buffering length that is a trade-off between latency and expected frequency of glitches. When a glitch happens, the rendering device picks up whatever data was in the buffer. Usually, but not necessarily, that buffer is implemented as a circular buffer. The buffer is usually pre-cleared such that when a glitch happens, then predictable zero-level audio is played out.